home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / tdemo2.lha / ProgrammersInfo / DSKEL-FR.c < prev    next >
C/C++ Source or Header  |  1994-06-05  |  3KB  |  172 lines

  1. //                           SKEL-FAKE v1.0
  2.  
  3. //                           (FAKE REPORTER)
  4.  
  5. //**********************
  6. //*****  Includes  *****
  7. //**********************
  8.  
  9. #include <proto/all.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12.  
  13. #include <string.h>
  14. #include <tempest/headers.h>
  15.  
  16. //********************************
  17. //*****  Structures/Defines  *****
  18. //********************************
  19.  
  20.  struct MyMessage
  21.   {
  22.    struct Message Msg; // for Exec message routines
  23.    ULONG  Command;     // Command to be executed.
  24.  
  25.    char   *text1,
  26.           *text2,
  27.           *text3;
  28.    int    Value1,
  29.           Value2;
  30.    ULONG  LongValue;
  31.    LONGBITS Flags;
  32.    int    carrier;
  33.    struct User       *User;
  34.    struct SystemData *SystemData;
  35.    struct NodeData   *NodeData;
  36.    struct Today      *Today;
  37.   };
  38.  
  39. struct MyMessage send;
  40.  
  41. struct User *User;
  42. struct MsgPort *MyPort = NULL;
  43. struct MyMessage *msg;
  44.  
  45. int  DoorStart(TEXT *);
  46. int  DOORIO(VOID);
  47. VOID CloseStuff(VOID);
  48.  
  49. VOID pl(TEXT *);
  50. VOID input(TEXT *,int);
  51.  
  52. char MyName[60],st[60];
  53.  
  54. //******************
  55. //*****  Main  *****
  56. //******************
  57.  
  58. VOID main(int argc,char *argv[])
  59. {
  60.  char string1[255],string2[255];
  61.  register int fd;
  62.  if(!DoorStart(argv[1])) { PutStr("[os2] Tempest Door\n"); exit(0); }
  63.  pl("\f[DSKEL-FR v3.15Fake Reporter  By Michael Bockert [05-24-94]\r\n");
  64.  pl("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
  65.  
  66.  CONTINUE:
  67.  
  68.  pl("[Q = QuitEnter Filename of Fake: ");
  69.  input(string1,12);
  70.  if(string1[0] == ' ')
  71.     CloseStuff();
  72.  if(string1[1] == NULL)
  73.     if((string1[0] == 'q') || (string1[0] == 'Q'))
  74.         CloseStuff();
  75.  strcpy(string2,"FAKES:");
  76.  strcat(string2,string1);
  77.  fd=Open(string2,MODE_NEWFILE);
  78.  Close(fd);
  79.  goto CONTINUE;
  80. }
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. //************************
  91. //*****  Door Start  ***** // MUST BE INCLUDED IN ALL DOORS!
  92. //************************
  93.  
  94. int DoorStart(TEXT *node)
  95. {
  96.  struct MsgPort *HisPort;
  97.  send.carrier=0;
  98.  sprintf(st,"%s:TEMPEST_DOOR",node);
  99.  HisPort = FindPort(st);
  100.  if(HisPort==NULL) return (FALSE);
  101.  sprintf(MyName,"%s:DOOR_PORT",node);
  102.  MyPort = CreatePort(MyName,0L);
  103.  if(MyPort==NULL)
  104.   {
  105.    PutStr("Cant open port");
  106.    return(int)FALSE;
  107.   }
  108.  DOORIO();
  109.  User=*&send.User;
  110.  return (int)TRUE;
  111. }
  112.  
  113. //********************
  114. //*****  DoorIO  ***** // MUST BE INCLUDED IN ALL DOORS!
  115. //********************
  116.  
  117. int DOORIO(VOID)
  118. {
  119.  struct MsgPort *HisPort;
  120.  if(send.carrier) return(0);
  121.  HisPort = FindPort(st);
  122.  if(HisPort!=NULL)
  123.   {
  124.    send.Msg.mn_Node.ln_Type = NT_MESSAGE;
  125.    send.Msg.mn_Length = sizeof(send);
  126.    send.Msg.mn_ReplyPort = MyPort;
  127.    send.carrier=0;
  128.    PutMsg((struct MsgPort *)HisPort,(struct Message *)&send);
  129.    Wait(1 << MyPort->mp_SigBit);
  130.    GetMsg(MyPort);
  131.    if(send.carrier) CloseStuff();
  132.    return(1);
  133.   }
  134.  return(0);
  135. }
  136.  
  137. //*************************
  138. //*****  Close Stuff  ***** // MUST BE INCLUDED IN ALL DOORS!
  139. //*************************
  140.  
  141. VOID CloseStuff(VOID)
  142. {
  143.  send.Command=999;
  144.  DOORIO();
  145.  while(msg=(struct MyMessage *)GetMsg(MyPort)) ReplyMsg((struct Message *)msg);
  146.  if(MyPort) DeletePort(MyPort);
  147.  exit(0);
  148. }
  149.  
  150. //*******************
  151. //*****  Input  ***** // Command 20
  152. //*******************
  153.  
  154. VOID input(TEXT *mstring,int len)
  155. {
  156.  send.Command=20;
  157.  send.Value1=len;
  158.  send.text1 =mstring;
  159.  DOORIO();
  160. }
  161.  
  162. //*****************************
  163. //*****  PL (Print Line)  ***** // Command 1
  164. //*****************************
  165.  
  166. VOID pl(TEXT *string)
  167. {
  168.  send.Command=1;
  169.  send.text1=string;
  170.  DOORIO();
  171. }
  172.